package poo.biblioteca.bd;

import biblioteca.entidades.Prestamo;
import biblioteca.excepciones.ExcepcionDeBD;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class BDPrestamos extends BDBase {

    public void registrarPrestamo(Prestamo nuevoPrestamo) throws ExcepcionDeBD {
        dbm = DBManager.getInstancia();
        try (Connection conn = dbm.getConnection()) {

            conn.setAutoCommit(false);

            PreparedStatement pst = conn.prepareStatement(
                    "INSERT INTO PRESTAMO (FECHAPRESTAMO, FECHAPROGRAMADADEVOLUCION, IDEJEMPLAR, IDLECTOR) "
                    + "VALUES (?,?,?,?)");
  
            pst.setDate(1, new java.sql.Date(nuevoPrestamo.getFechaPrestamo().getTime()));
            pst.setDate(2, new java.sql.Date(nuevoPrestamo.getFechaProgramadaDevolucion().getTime()));
            pst.setInt(3, nuevoPrestamo.getEjemplar().getIdEjemplar());
            pst.setInt(4, nuevoPrestamo.getLector().getIdLector());
            System.out.println(pst.toString());
            pst.executeUpdate();

            pst = conn.prepareStatement(
                    "UPDATE EJEMPLAR SET ESTADO = ? WHERE "
                    + "IDEJEMPLAR = ?");
            pst.setString(1, "P");
            pst.setInt(2, nuevoPrestamo.getEjemplar().getIdEjemplar());
            pst.executeUpdate();
            
            conn.commit();
            
        } catch (SQLException ex) {
            throw new ExcepcionDeBD("No se pudo registrar el nuevo "
                    + "Prestamo en la Base de Datos", ex);
        }
    }
}
